package leetbook.string;

public class Solution1 {

    public static void main(String[] args) {
        String s = "A man, a plan, a canal: Panama";
        System.out.println(new Solution1().isPalindrome(s));
        System.out.println('A'-'a');
    }

    public boolean isPalindrome(String s) {
        int i = 0, j = s.length()-1;
        while(i<=j){
            //判断i,j所指是否数字或者大小写字母
            char ic = s.charAt(i);
            if(!('0'<=ic&&'9'>=ic||'A'<=ic&&'Z'>=ic||'a'<=ic&&'z'>=ic)){
                //不是数字或大小写字母
                i++;
                continue;
            }
            char jc = s.charAt(j);
            if(!('0'<=jc&&'9'>=jc||'A'<=jc&&'Z'>=jc||'a'<=jc&&'z'>=jc)){
                //不是数字或大小写字母
                j--;
                continue;
            }
            //到这里说明i,j所指字符都是数字或大小写字母
            if(ic>='A'&&jc>='A'){ //都是字母，要考虑大小写问题
                if(ic!=jc&&Math.abs(ic-jc)!=32) return false;
                i++;j--;
            }else if(ic<='9'&&jc<='9'){ //全数字，直接用==判断
                if(ic!=jc) return false;
                i++;j--;
            }else { //一个字母一个数字
                return false;
            }
        }
        return true;
    }
}
